icontheme: Make sure icon_info->scale doesn't end up 0
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 17 Sep 2013 20:37:06 +0000 (22:37 +0200)
committerAlexander Larsson <alexl@redhat.com>
Fri, 20 Sep 2013 12:42:41 +0000 (14:42 +0200)
GdkPixbuf will fail returning %NULL if we try to scale a pixbuf to (0, 0),
which will then trigger an assertion in gtk_icon_info_load_icon_finish();
we never want a scale of 0, so ensure it is at least 1.

https://bugzilla.gnome.org/show_bug.cgi?id=708384

gtk/gtkicontheme.c

index e9c9838ead4a506045e53e8b6670dc605e225810..3f1ac3b00f90a7b2f1529a28f2c78229d8ff7119 100644 (file)
@@ -3721,12 +3721,12 @@ icon_info_ensure_scale_and_pixbuf (GtkIconInfo  *icon_info,
   if (icon_info->forced_size)
     icon_info->scale = -1;
   else if (icon_info->dir_type == ICON_THEME_DIR_FIXED)
-    icon_info->scale = round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale));
+    icon_info->scale = MAX(round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale)), 1.0);
   else if (icon_info->dir_type == ICON_THEME_DIR_THRESHOLD)
     {
       if (scaled_desired_size  >= (icon_info->dir_size - icon_info->threshold) * icon_info->dir_scale &&
          scaled_desired_size <= (icon_info->dir_size + icon_info->threshold) * icon_info->dir_scale)
-       icon_info->scale = round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale));
+       icon_info->scale = MAX(round((gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale)), 1.0);
       else if (icon_info->dir_size > 0)
        icon_info->scale =(gdouble) scaled_desired_size / (icon_info->dir_size * icon_info->dir_scale);
     }